#!/usr/bin
# -*- coding: utf-8 -*-

"""
Remarques générales :
- grandeurs CODE : C
- grandeurs USER : U
- fonctions de mapping : C2U, U2C

"""


# Domain
"""
Domain:
+ Sub-domain 1
| + Mesh 1.1
| + Mesh 1.2
+ Sub-domain 2
| + Mesh 2.1
| + Mesh 2.2
...
"""



# Sub-domain
"""
Sub-domain:
+ Mesh 1.1
+ Mesh 1.2
...
"""


# Mesh
"""
Mesh:
"""



class Mesh():
    """
    """
    def __init__(self):
        """
        """
        # Nodes
        self.nodesU2C = {} # dict[nodeUserId|str] = nodeCodeId|int
        self.nodesC2U = [] # list[nodeCodeId|int] = nodeUserId|str
        self.nodesX = [[()]] # list[stepCodeId|int] = list[nodeCodeId|int] = tuple(nodeX0,nodeX1,nodeX2)|float

        # Dofs
        # Each node has 6 physical degrees of freedom : u0, u1, u2, t0, t1, t2
        # which are stored in a sparse lil matrix of 1 + 6 nEnrichment functions lines and 6 nNodes columns:
        # - line 0 stores the classical FEM degrees of freedom
        # - line 1stEnrichementFunction stores the enrichement function of u0
        # - ...
        # - line 6 1stEnrichementFunction stores the enrichement function of t2
        # ...
        # - line NstEnrichementFunction stores the enrichement function of u0
        # - ...
        # - line 6 NstEnrichementFunction stores the enrichement function of t2
        self.dofs = sp.lil_matrix([7x6*nNodes])

        #
